package samsung.sds.system.export.service;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;

import samsung.sds.survey.surveyStatistics.model.QualitySurveyStatisticsResultEntity;
import samsung.sds.survey.surveyStatistics.model.SurveyEntity;


public interface ExportService {


    public <T> String createExcel(List<T> xls) throws IOException,
            IllegalArgumentException, IllegalAccessException,
            InvocationTargetException;

    public <T> String createQuestionExcel(Map<String, List<String>> xls) throws IOException,
            IllegalArgumentException, IllegalAccessException,
            InvocationTargetException;

    public <T> String createExcelForUserAnswerStatus(List<T> xls, String[] strDetail) throws IOException,
            IllegalArgumentException, IllegalAccessException,
            InvocationTargetException;
    
    /**
     * 导出YN类型谋调查问卷的统计结果
     * @param map
     * @param questionList
     * @param voteResultList
     * @return
     * @throws IOException
     * @throws IllegalArgumentException
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     */
    public <T> String createExcelForYNStatus(Map<String, Object> map, List<QualitySurveyStatisticsResultEntity> questionList, List<QualitySurveyStatisticsResultEntity> voteResultList)
            throws IOException,
            IllegalArgumentException, IllegalAccessException,
            InvocationTargetException;

    /**
     * 组合统计结果导出
     * @param xls
     * @param survey
     * @param paramMap
     * @param questionOrderArray
     * @param <T>
     * @return
     * @throws IOException
     * @throws IllegalArgumentException
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     */
    public <T> String createGroupStaticSurveyStatics(Map<String, List<String>> xls, SurveyEntity survey, Map<String, String> paramMap, String[] questionOrderArray) throws IOException,
            IllegalArgumentException, IllegalAccessException,
            InvocationTargetException;

    /**
     * 导出数字类型谋调查问卷的统计结果
     *
     * @param map
     * @param questionList
     * @param voteResultList
     * @return
     * @throws IOException
     * @throws IllegalArgumentException
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     */
    public <T> String createExcelForQualitySurvey(Map<String, Object> map, List<QualitySurveyStatisticsResultEntity> questionList, List<QualitySurveyStatisticsResultEntity> voteResultList) throws IOException,
            IllegalArgumentException, IllegalAccessException,
            InvocationTargetException;
    

}
